//奇偶位数
/*给你一个 正 整数 n 。

用 even 表示在 n 的二进制形式（下标从 0 开始）中值为 1 的偶数下标的个数。

用 odd 表示在 n 的二进制形式（下标从 0 开始）中值为 1 的奇数下标的个数。

返回整数数组 answer ，其中 answer = [even, odd] 。
1 <= n <= 1000
*/
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* evenOddBit(int n, int* returnSize) {
    *returnSize = 2;
    int* arr = (int*)calloc(2,4);
   /* if (n & 1)
        arr[0]++;*/
    for (int i = 0; i < 31; i++) {
        if (i % 2) {
            if (n & (1 << i))
                arr[1]++;
        } else {
            if (n & (1 << i))
                arr[0]++;
        }
    }
    return arr;
}


//找出中枢整数
/*给你一个正整数 n ，找出满足下述条件的 中枢整数 x ：

1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。
返回中枢整数 x 。如果不存在中枢整数，则返回 -1 。题目保证对于给定的输入，至多存在一个中枢整数。
1 <= n <= 1000
*/
int pivotInteger(int n) {
    double sn = n * (n + 1) / 2;
    int i = (int)sqrt(sn);
    if (i * i == sn)
        return i;
    return -1;
}
//(k*(k+1))/2=(n*(n+1)/2+k)/2->k*(k+1)/2-k/2=n*(n+1)/4->k*k=n(n+1)/2
